package com.zhentao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhentao.dto.ParamDefinitionDTO;
import com.zhentao.dto.ParamDefinitionQueryDTO;
import com.zhentao.pojo.ParamDefinition;
import com.zhentao.vo.ParamDefinitionVO;

/**
* @author hp
* @description 针对表【param_definition(参数定义表：定义参数的基本属性和规则)】的数据库操作Service
* @createDate 2025-08-28 08:36:25
*/
public interface ParamDefinitionService extends IService<ParamDefinition> {
    
    /**
     * 分页查询参数定义
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    Page<ParamDefinitionVO> queryParamDefinitions(ParamDefinitionQueryDTO queryDTO);
    
    /**
     * 根据ID获取参数定义详情
     * @param id 参数定义ID
     * @return 参数定义详情
     */
    ParamDefinitionVO getParamDefinitionDetail(Long id);
    
    /**
     * 创建参数定义
     * @param dto 参数定义信息
     * @return 是否创建成功
     */
    boolean createParamDefinition(ParamDefinitionDTO dto);
    
    /**
     * 更新参数定义
     * @param id 参数定义ID
     * @param dto 更新信息
     * @return 是否更新成功
     */
    boolean updateParamDefinition(Long id, ParamDefinitionDTO dto);
    
    /**
     * 删除参数定义
     * @param id 参数定义ID
     * @return 是否删除成功
     */
    boolean deleteParamDefinition(Long id);
    
    /**
     * 检查参数键是否已存在
     * @param paramKey 参数键
     * @param excludeId 排除的ID（用于更新时检查）
     * @return 是否存在
     */
    boolean existsByParamKey(String paramKey, Long excludeId);
}
